import { MidwayConfig } from '@midwayjs/core';
// 引入 detect-port
export default {
  // use for cookie sign key, should change to your own and keep security
  keys: '1716197990138_8040',
  koa: {
    port: process.env.PORT ? parseInt(process.env.PORT) : 7002,
  },
  view: {
    defaultViewEngine: 'nunjucks',
  },
  cors: {
    // 允许跨域的方法，【默认值】为 GET,HEAD,PUT,POST,DELETE,PATCH
    allowMethods: ['GET', 'HEAD', 'PUT', 'POST', 'DELETE', 'PATCH'],
    // 设置 Access-Control-Allow-Origin 的值，【默认值】会获取请求头上的 origin
    // 也可以配置为一个回调方法，传入的参数为 request，需要返回 origin 值
    // 例如：http://test.midwayjs.org
    // 如果设置了 credentials，则 origin 不能设置为 *
    origin: (request) => {
      console.info('origin:', request)

      const authedOrigin = request.header.origin;
      console.info('request.header.origin:', authedOrigin)
      const containLocalStr = authedOrigin.indexOf('localhost');
      console.info('containLocalStr:', containLocalStr)
      const containLocalIp = authedOrigin.indexOf('127.0.0.1');
      console.info('containLocalIp:', containLocalIp)
      if ((containLocalStr > 0) || (containLocalIp > 0)) {
        console.info('auth origin:', authedOrigin)
        return authedOrigin
      }
      else {
        console.info('not auth origin')
        return 'not auth origin'
      }
    },
    // 设置 Access-Control-Allow-Headers 的值，【默认值】会获取请求头上的 Access-Control-Request-Headers
    allowHeaders: '',
    // 设置 Access-Control-Expose-Headers 的值
    exposeHeaders: '',
    // 设置 Access-Control-Allow-Credentials，【默认值】false
    // 也可以配置为一个回调方法，传入的参数为 request，返回值为 true 或 false
    credentials: (request) => {
      // console.info('credentials:', request)
      return true
    },
    // 是否在执行报错的时候，把跨域的 header 信息写入到 error 对的 headers 属性中，【默认值】false
    keepHeadersOnError: false,
    // 设置 Access-Control-Max-Age
    maxAge: 0,
  },
} as MidwayConfig;
